package com.jijuxie.system.domain.dto;

import lombok.Data;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;

@Data
public class AgentRegisterDTO {

    /**
     * 用户名
     */
    @NotBlank(message = "用户名不能为空")
    @Pattern(regexp = "^[a-zA-Z0-9_]{4,16}$", message = "用户名必须是4-16位字母、数字或下划线")
    private String username;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空")
    @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,16}$", 
            message = "密码必须包含大小写字母和数字，长度8-16位")
    private String password;

    /**
     * 确认密码
     */
    @NotBlank(message = "确认密码不能为空")
    private String confirmPassword;

    /**
     * 昵称
     */
    @NotBlank(message = "昵称不能为空")
    private String nickName;

    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    /**
     * 邮箱
     */
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String email;

    /**
     * 工号
     */
    @NotBlank(message = "工号不能为空")
    private String agentNo;

    /**
     * 证书编号
     */
    @NotBlank(message = "证书编号不能为空")
    private String licenseNo;

    /**
     * 证书图片
     */
    @NotBlank(message = "请上传证书图片")
    private String licenseImage;

    /**
     * 从业年限
     */
    @NotNull(message = "从业年限不能为空")
    @Min(value = 0, message = "从业年限不能小于0")
    private Integer experience;

    /**
     * 服务区域
     */
    @NotBlank(message = "服务区域不能为空")
    private String serviceArea;

    /**
     * 专业领域
     */
    @NotBlank(message = "专业领域不能为空")
    private String expertise;

    /**
     * 个人简介
     */
    @NotBlank(message = "个人简介不能为空")
    @Size(max = 500, message = "个人简介不能超过500字")
    private String introduction;

    /**
     * 验证码
     */
    @NotBlank(message = "验证码不能为空")
    private String verifyCode;
} 